"use strict";
class Person {
    constructor(name, age) {
        this.name = name;
        this.age = age;
    }
}
// prototype 上的 age 遮蔽 Person 对象上的 age，new Person 时实际调用的时 prototype.age.set() 方法
let value = 130;
Object.defineProperty(Person.prototype, 'age', {
    get() {
        return value;
    },
    set(val) {
        value = val;
    }
});
const p1 = new Person('张三', 18);
// console.log(p1) // Person {name: '张三', age: 18}
// 不遮蔽
// let value = 130
// Object.defineProperty(Person.prototype, 'age', {
//   get() {
//     return value
//   },
//   set(val) {
//     value = val
//   }
// })
console.log(p1);
// Person { name: '张三', age: 18 }
// age: 18
// name: "张三"
// [[Prototype]]: Object
// age: 130
// constructor: class Person
//     get age: ƒ get()
//     set age: ƒ set(val)
// [[Prototype]]: Object
